package cn.edu.ujn.ch13.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import cn.edu.ujn.ch13.model.User;
import cn.edu.ujn.ch13.vo.UserVO;

@Controller
public class UserController {
	
	/**
	 * 1、绑定默认数据类型
	 * @param HttpServletRequest 
	 * @return String
	 */

	@RequestMapping("/selectUser")
	public String selectUser(HttpServletRequest request) {
		String id = request.getParameter("id");
		System.out.println(id);
		request.setAttribute("id", id);
		return "success";
	}
	
	/**
	 * 2、绑定简单数据类型
	 * @param Integer  
	 * @return String
	 */
	@RequestMapping("/findUser")
	public String findUser(Integer id,Model model) {
		System.out.println(id);
		model.addAttribute("id",id);
		return "success";
}
	
	/**
	 * 3、绑定POJO数据类型
	 * @param User  
	 * @return String
	 */	
	@RequestMapping("/toRegister")
	public String toRegister() {
		return "register";
	}
	// TODO 完善/registerUser （绑定POJO）
	@RequestMapping("/registerUser")
	public String registerUser(User user) {
		System.out.println("注册的用户信息："+user);
		return "ok";
	}
	/**
	 * 4、绑定包装POJO数据类型
	 * @param User  
	 * @return String
	 */	
//	@RequestMapping("/orders")
//	public String tofindOrdersWithUser( ) {
//	    return "orders";
//	}
//	// TODO 完善/findOrdersWithUser（完善绑定包装POJO）
//	@RequestMapping("/findOrdersWithUser")
//	public String findOrdersWithUser() {
//	   return "success";
//	}
	
	/**
	 * 5、绑定复杂数据-绑定数组-删除用户
	 * @param Integer[]   
	 * @return String
	 */	
	/**
	 * 向用户列表页面跳转user.jsp==deleteUser.jsp新旧版本对比,在此保留作为学习参考
	 */
	@RequestMapping("/toUser")
	public String selectUsers( ) {
	    return "user";
	}
    @RequestMapping("/todeleteUser")
    public String toDeleteUser() {
    	List<User> userList = new ArrayList<User>();
		User u1 = new User();
		u1.setId(1);
		userList.add(u1);
		u1.setUsername("liukun");
		User u2 = new User();
		u2.setId(2);
		u2.setUsername("jingshan");
		userList.add(u2);
		// TODO 完善传递userList 到页面
        return "deleteUser";
    }
	/**
	 * 接收批量删除用户的方法
	 */
	@RequestMapping("/deleteUsers")
	public String deleteUsers(Integer[] ids,Model model) {
	    if(ids !=null){
	        for (Integer id : ids) {            
	// 使用输出语句模拟已经删除了用户
	System.out.println("删除了id为"+id+"的用户！");
	        }	
	    }else{
	        System.out.println("ids=null");
	    }
	    model.addAttribute("deleteusers", "删除用户成功");
	    return "success";
	}
	

    
    /**
	 * 6、绑定复杂数据-绑定集合-修改用户
	 * @param UserVO    
	 * @return String
	 */
    @RequestMapping("/toeditUser")
    public String toEditUser() {
        return "editUser";
    }
    /**
	 * 向用户批量修改页面跳转 editUser.jsp==user_edit.jsp新旧版本对比,在此保留作为学习参考
	 */
	@RequestMapping("/toUserEdit")
	public String toUserEdit() {
	    return "user_edit";
	}
    // TODO 添加/editUsers（完善绑定集合）
    @RequestMapping("/editUsers")
	public String editUsers(UserVO userList,Model model) {
	    // 将所有用户数据封装到集合中
	    List<User> users = userList.getUsers();
	    // 循环输出所有用户信息
	    for (User user : users) {
	        // 如果接收的用户id不为空，则表示对该用户进行了修改
	        if(user.getId() !=0){ 
	            System.out.println("修改了id为"+user.getId()+ 
	                    "的用户名为："+user.getUsername());
	        }
	    }
	    model.addAttribute("editusers", "修改用户成功");
	    return "success";
	}

}
